package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import model.Casilla;
import model.Premio;
import model.Rodillo;
import controller.Maquina;

public class AdmPersistenciaMaquina {
	private static AdmPersistenciaMaquina instancia;
	private static final String  DELETE_MAQUINAS = "delete from tpinteractivas.maquinas where codigo=1";
	private static final String  INSERT_MAQUINA = "insert into tpinteractivas.maquinas (Codigo,Recaudacion,RecaudacionMinima,PrecioJugada,Credito)"
			+ "values (?,?,?,?,?)";
	private static final String  SELECT_MAQUINA = "select Codigo,Recaudacion,RecaudacionMinima,PrecioJugada,credito from tpinteractivas.maquinas ";
	
	private static final String ESTADO_MAQUINA_SAVE ="update tpinteractivas.maquinas set Recaudacion=?, credito=? where codigo=1";
	
	private AdmPersistenciaMaquina() {

	}

	public static synchronized AdmPersistenciaMaquina getInstancia() {
		if (instancia == null)
			instancia = new AdmPersistenciaMaquina();
		return instancia;
	}

	
	public boolean delete() {
		boolean delete=false;
		Connection con = PoolConnection.getPoolConnection().getConnection();
		try {

			
			Statement s = con.createStatement();
			delete = s.execute(DELETE_MAQUINAS);		
			PoolConnection.getPoolConnection().realeaseConnection(con);
		} catch (Exception e) {
			System.out.println();
		}
		PoolConnection.getPoolConnection().realeaseConnection(con);
		return delete;
	}	


	public void insertarMaquina(Maquina maq) {
		try {
			Connection con = PoolConnection.getPoolConnection().getConnection();
			PreparedStatement s = con
					.prepareStatement(INSERT_MAQUINA);
			// agregar campos
			s.setLong(1, 1);
			s.setFloat(2, maq.getRecaudacion());
			s.setFloat(3, maq.getRecaudacionMinima());
			s.setFloat(4, maq.getPrecioJugada());
			s.setFloat(5, 0);
			s.execute();
			PoolConnection.getPoolConnection().realeaseConnection(con);
		} catch (Exception e) {
			
			System.out.println(e.getMessage());
		}

	}


	
	public Maquina selectMaquina(){
		Maquina respuesta=null;
		Connection con = PoolConnection.getPoolConnection().getConnection();
		try {
			Statement s = con.createStatement();
			ResultSet result = s.executeQuery(SELECT_MAQUINA);
		
		while (result.next())
		{
			int codigo = result.getInt(1);
			float recaudacion = result.getFloat(2);
			float recaudacionMinima = result.getFloat(3);
			float precioJugada = result.getFloat(4);
			float credito = result.getFloat(5);
			respuesta = new Maquina(codigo, recaudacion,recaudacionMinima,precioJugada,credito);
			
					
		}
		}catch (Exception e) {
			System.out.println();
		}
		// agregar campos
		PoolConnection.getPoolConnection().realeaseConnection(con);
		return respuesta;
	}

	public void guardarEstadoMaquina(Maquina maq) {
		try {

			Connection con = PoolConnection.getPoolConnection().getConnection();
			PreparedStatement s = con
					.prepareStatement(ESTADO_MAQUINA_SAVE);
			// agregar campos
			s.setFloat(1, maq.getRecaudacion());
			s.setFloat(2, maq.getCredito());
			s.execute();
			PoolConnection.getPoolConnection().realeaseConnection(con);
		} catch (Exception e) {
			System.out.println();
		}
		
	}





}
